<?php

class Scaffold {

    var $tabela = "";
	private $registry;

    function Scaffold($registry){
		$this->registry = $registry;
	}
	
	function listar_tabelas()
	{
		$sql = "SHOW TABLES FROM " . $this->registry['db']->get_DBname();
		$result = mysql_query($sql);
		echo $this->registry['db']->get_DBname();
		if(!$result)
		{
			if(Debug)
				echo  mysql_error() . " @ function listar_tabelas <br />";
			echo 'Por motivos técnicos não foi possível processar o seu pedido, por favor informe o administrador se o erro persistir';
			die();
			exit;
		}
		
		$i = 0;
		while ($row = mysql_fetch_row($result)) {
    		$contents[$i] = $row[0];
    		$i++;
		}

		if($i == 0)
		{
			return false;
		} else {
			return $contents;
		}
	}
	
	function get_colunas($tabela) 
	{
		$sql = "show columns from " . $tabela;
		$result = mysql_query($sql);
		if(!$result)
		{
			if(Debug)
				echo  mysql_error() . " @ function show_colunas <br />";
			echo 'Por motivos técnicos não foi possível processar o seu pedido, por favor informe o administrador se o erro persistir';
			die();
			exit;
		}
		
		$i = 0;
		$tabela_data = array();
		while($row = mysql_fetch_object($result)){
			array_push($tabela_data, $row);
			$i++;
        }
        
        if($i)
        {
        	$content = Array();
        	$content = $tabela_data;
			return $content;
        } else {
        	return 0;
        }
	}
	function listar($tabela){
		
		$sql = "SELECT * FROM $tabela";
		$result = mysql_query($sql);
        
		if(!$result)
		{
			if(Debug)
				echo  mysql_error() . " @ function listar <br />";
			echo 'Por motivos técnicos não foi possível processar o seu pedido, por favor informe o administrador se o erro persistir';
			die();
			exit;
		}
		
        $i = 0;
		$tabela_data = array();
		while($array = mysql_fetch_array($result)){
			array_push($tabela_data, $array);
			$i++;
        }
		
        if($i != 0)
        {
        	$content = Array();
        	$content['colunas'] = $this->get_colunas($tabela);
        	$content['data'] = $tabela_data;
			return $content;
        } else {
        	return 0;
        }
	}
	
	function get_key_value($tabela, $campos, $valores)
	{
		$id = $this->get_key($tabela);
		for($i = 0; $i < count($campos); $i++)
		{
			if($campos[$i] == $id )
				return $valores[$id];
		}
		
		return 0;
	}
	
	function get_key($tabela)
	{
		$colunas = $this->get_colunas($tabela);
		//echo $key;
		$id = "";
		foreach($colunas as $coluna)
		{
			if($coluna->Key == "PRI")
				$id = $coluna->Field;
		}
		if($id == "")
		{
			return 0;	 
		}
		
		return $id;
	}
	function get_linha($tabela, $valor)
	{
		$id = $this->get_key($tabela);
		
		$sql = "SELECT * FROM $tabela where $id='$valor'";
		$result = mysql_query($sql);
		if(!$result)
		{
			if(Debug)
				echo  mysql_error() . " @ function inserir <br />";
			echo 'Por motivos técnicos não foi possível processar o seu pedido, por favor informe o administrador se o erro persistir';
			die();
			exit;
		}
		
		if(mysql_num_rows($result) != 1)
		{
			return 0;
		}
		
		$linha = mysql_fetch_row($result);
        
        $content = Array();
        $content['colunas'] = $this->get_colunas($tabela);
        $content['data'] = $linha;
        return $content;
	}
	
	function inserir($tabela, $my_campos, $my_valores)
	{
    	$valores = "'";
    	$campos = implode(", ", $my_campos);
    	$valores .= implode("', '", $my_valores);
    	$valores .= "'";
    	
    	$sql = "INSERT INTO " . $tabela . " ( $campos ) VALUES ( $valores )";
		$result = mysql_query($sql);
        
		if(!$result)
		{
			if(Debug)
				echo  mysql_error() . " @ function inserir <br />";
			echo 'Por motivos técnicos não foi possível processar o seu pedido, por favor informe o administrador se o erro persistir';
			die();
			exit;
		}
		
		$result = mysql_query( "SELECT last_insert_id()" );
		if(!$result)
		{
			if(Debug)
				echo  mysql_error() . " @ function inserir <br />";
			echo 'Por motivos técnicos não foi possível processar o seu pedido, por favor informe o administrador se o erro persistir';
			die();
			exit;
		}
    	$row = mysql_fetch_array($result);
    	return $row[0];
	}
	
	function remover($tabela, $my_campo, $my_valor)
	{
    	$sql = "DELETE FROM " . $tabela . " where " . $my_campo . "='" . $my_valor . "'";
		$result = mysql_query($sql);
        
		if(!$result)
		{
			if(Debug)
				echo  mysql_error() . " @ function remover <br />";
			echo 'Por motivos técnicos não foi possível processar o seu pedido, por favor informe o administrador se o erro persistir';
			die();
			exit;
		}
		
		return 1;
	}
	
	function update($tabela, $my_campos, $my_valores)
	{
		$id = $this->get_key($tabela);
		$id_value = $this->get_key_value($tabela, $my_campos, $my_valores);
		
		$linha = "";
		$i = 0;
		foreach($my_campos as $campo)
		{
			$linha .= " $campo='$my_valores[$campo]', " ;
			$i++;
		}
		
		$linha = substr($linha, 0, -2);
		
    	$sql = "UPDATE " . $tabela . " SET $linha WHERE $id='$id_value'";
		$result = mysql_query($sql);
        
		if(!$result)
		{
			if(Debug)
				echo  mysql_error() . " @ function inserir <br />";
			echo 'Por motivos técnicos não foi possível processar o seu pedido, por favor informe o administrador se o erro persistir';
			die();
			exit;
		}
		
		return $id_value;
		
	}
	
}
?>